home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 46 / Amiga Format CD46 (1999-10-20)(Future Publishing)(GB)[!][issue 1999-12].iso / -serious- / programming / other / tandem / teaching / 39.asm < prev    next >
Assembly Source File  |  1999-09-06  |  3KB  |  92 lines

  1. * 39.asm          TLreqinfo     version 0.01    8.6.99
  2.  
  3.  
  4.  include 'Front.i'         ;*** change to 'Tandem.i' to step thru TL's ***
  5.  
  6.  
  7. ; This program tests the next of the requesters created by tandem.library,
  8. ; the TLreqinfo requester. This creates an information box, with an
  9. ; OK box, and an optional Cancel box, or a designer set of boxes. To
  10. ; use the TLreqinfo MACRO:
  11. ;
  12. ;  \1 = stringnum of header, followed by other strings for display
  13. ;  \2 = no. of strings to be displayed (1+)
  14. ;  \3 = 1:ok button 2:ok/canc buttons 3:designer boxes
  15. ;
  16. ; TLreqinfo returns choice in D0 (1+), or D0=0 if bad
  17. ;
  18. ; If \3=3, then \2 must be 2+. The last string is 1 or more strings for
  19. ; button contents, separated by \ characters.
  20.  
  21.  
  22. strings: dc.b 0
  23. st_1: dc.b 'Demonstrate TLreqinfo',0 ;1
  24.  dc.b 'This is the first line of info,',0 ;2
  25.  dc.b 'whereas this is the second line.',0 ;3
  26.  dc.b 'Finally, the third line.',0 ;4
  27.  dc.b 'You selected OK',0 ;5
  28.  dc.b 'You selected Cancel',0 ;6
  29.  dc.b 'Error: The requester won''t fit!!',0 ;7
  30.  dc.b 'Error: Can''t open screen & window - out of chip memory',0 ;8
  31.  dc.b 'Error: Can''t open the ASL font requester',0 ;9
  32.  dc.b 'Error: Can''t load your selected font',0 ;10
  33.  
  34.  ds.w 0
  35.  
  36. * deomonstrate TLreqinfo
  37. Program:                                  ;Note carefully how this program
  38.  TLwindow0                                ;gives error reports to the
  39.  bne.s Pr_open                            ;user if something goes wrong in
  40.  TLbad #8       ;quit if can't            ;the warm-up. This is an important
  41.  rts                                      ;aspect of user friendliness.
  42.  
  43. Pr_open:
  44.  TLaslfont #1              ;select font 1
  45.  bne.s Pr_ofont            ;go if ok
  46.  tst.l xxp_errn(a4)
  47.  beq Pr_redi               ;if font selection cancelled, use default font
  48.  TLbad #9                  ;if Asl font request failed, return bad
  49.  bra.s Pr_quit
  50.  
  51. Pr_ofont:
  52.  TLnewfont #1,#0,#1        ;put font 1, plain in req font
  53.  bne.s Pr_redi
  54.  TLbad #10                 ;bad if can't
  55.  bra.s Pr_quit
  56.  
  57. Pr_redi:
  58.  bsr Test                  ;Test TLReqinfo
  59.  
  60. Pr_quit:
  61.  TLwclose                  ;close screen, window & return
  62.  rts
  63.  
  64. * test TLreqinfo
  65. Test:
  66.  clr.w xxp_ReqNull(a4)     ;first get requester dimensions
  67.  TLreqinfo #2,#3,#2
  68.  bne.s Te_ok
  69.  TLbad #7                  ;bad if requester won't fit
  70.  rts
  71.  
  72. Te_ok:
  73.  move.l xxp_AcWind(a4),a5  ;a5 points to WSuite for window
  74.  move.w xxp_PWidth(a5),d0  ;center the requester horizontally in window
  75.  sub.w xxp_reqw+2(a4),d0
  76.  bmi.s Te_vert             ;go if too wide
  77.  lsr.w #1,d0
  78.  move.w d0,xxp_ReqLeft(a5)
  79.  
  80. Te_vert:
  81.  move.w xxp_PHeight(a5),d0 ;center the requester viertically in window
  82.  sub.w xxp_reqh+2(a4),d0
  83.  bmi.s Te_redi             ;go if too high
  84.  lsr.w #1,d0
  85.  move.w d0,xxp_ReqTop(a5)
  86.  
  87. Te_redi:
  88.  TLreqinfo #2,#3,#2        ;now, put up requester for real
  89.  addq.w #4,d0              ;choice becomes 5/6
  90.  TLreqinfo d0              ;report choice (default /2,/3=#1,#1)
  91.  rts
  92.